home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / extras / programm / gemfsc20 / gemfsc20.lzh / GEMFUNCS / GRFMBLIT.C < prev    next >
C/C++ Source or Header  |  1993-02-01  |  1KB  |  40 lines

  1. /**************************************************************************
  2.  * GRFMBLIT.C - grf_memblit() function.
  3.  *************************************************************************/
  4.  
  5. #include "gemfintl.h"
  6. #include <osbind.h>
  7.  
  8. void *grf_memblit(options, buffer, prect)
  9.     short       options;
  10.     void    *buffer;
  11.     void    *prect;
  12. {
  13.     long     mem_len;            /* total bytes needed for blit buffer */
  14.  
  15. /*----------------------------------------------------------------------*
  16.  * if buffer is NULL, get a buffer, and blit from screen to buffer,
  17.  * else blit from provided buffer to screen.
  18.  *----------------------------------------------------------------------*/
  19.  
  20.     options &= ~(GRF_BFROMSCREEN|GRF_BTOSCREEN); /* bufptr sets direction */
  21.  
  22.     if (buffer == NULL) {
  23.         if (0 < (mem_len = grf_blit(options|GRF_BMEMCALC, NULL, prect))) {
  24.             if (NULL != (buffer = apl_malloc(mem_len))) {
  25.                 if (0 == grf_blit(options|GRF_BFROMSCREEN, buffer, prect)) {
  26.                     apl_free(buffer);
  27.                     buffer = NULL;
  28.                 }
  29.             }
  30.         }
  31.     } else {
  32.         grf_blit(options|GRF_BTOSCREEN, buffer, prect);
  33.         apl_free(buffer);
  34.     }
  35.  
  36.     return buffer;
  37. }
  38.  
  39.  
  40.